abstract class Animal {
    public name;
    public constructor(name:string) {
        this.name = name;
    }
    public abstract sayHi():void;
}

class Cat extends Animal {
    public sayHi() {
        console.log(`Meow, My name is ${this.name}`);
    }
}
let cat = new Cat('Tom');
cat.sayHi();